/**
 * 
 */
package de.htw_saarland.webservices.robotersteuerung;

import javax.jws.*; 
import javax.jws.soap.SOAPBinding; 

import willy.communication.RoboFactory;
import willy.communication.RoboHandle;
import willy.communication.nxt.NXTHandle;

/**
 * @author Sascha
 */
@WebService(name="MovementService") 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public class MovementService {
	private static int SPEED = 200; 
	private static int TURNSPEED = 40; 
	
	/**
	 * Konstruktor macht derzeit noch nichts ;) 
	
	public MovementService(){
		
	} */
	
	/** 
	 * Vorwärts fahren aktivieren 
	 * @return gibt true zurück wenn es geklappt hat, false wenn es nicht funktioniert
	 * 
	 */
	@WebMethod(operationName="forward")
	public boolean forward(@WebParam(name="roboID")String id)
	{
		RoboFactory rf = RoboFactory.getInstance; 
		try{
			rf.getRoboHandle(id).forward(SPEED);
		}catch (Exception ex)
		{
			return false;
		}
		
		return true; 
	}
	
	/** 
	 * Rückwärts fahren aktivieren 
	 * @return gibt true zurück wenn es geklappt hat, false wenn es nicht funktioniert
	 * 
	 */
	@WebMethod
	public boolean backward(@WebParam(name="roboID")String id)
	{
		RoboFactory rf = RoboFactory.getInstance; 
		try{
			rf.getRoboHandle(id).forward(-SPEED);
		}catch (Exception ex)
		{
			return false;
		}
		
		return true; 
	}

	/** 
	 * Nach links fahren aktivieren 
	 * @return gibt true zurück wenn es geklappt hat, false wenn es nicht funktioniert
	 * 	 
	 */
	@WebMethod
	public boolean turnLeft(@WebParam(name="roboID")String id)
	{
		RoboFactory rf = RoboFactory.getInstance; 
		try{
			rf.getRoboHandle(id).left(TURNSPEED);
		}catch (Exception ex)
		{
			return false;
		}
		
		return true; 
	}
	
	/** 
	 * Nach rechts fahren aktivieren 
	 * @return gibt true zurück wenn es geklappt hat, false wenn es nicht funktioniert
	 * 
	 */
	@WebMethod
	public boolean turnRight(@WebParam(name="roboID")String id)
	{
		RoboFactory rf = RoboFactory.getInstance; 
		try{
			rf.getRoboHandle(id).right(TURNSPEED);
		}catch (Exception ex)
		{
			return false;
		}
		 
		return true; 
	}
	
	/** 
	 * Stopt sämtliche bewegungen
	 * @return gibt true zurück wenn es geklappt hat, false wenn es nicht funktioniert
	 * 
	 */
	@WebMethod
	public boolean stop(@WebParam(name="roboID")String id)
	{
		RoboFactory rf = RoboFactory.getInstance; 
		try{
			rf.getRoboHandle(id).stop();
		}catch (Exception ex)
		{
			return false;
		}
		
		return true; 
	}
}
